import pandas as pd
import glob
import os

def is_even(number):
    """检查数字是否为偶数"""
    try:
        # 确保是数字且不是空值
        if pd.isna(number):
            return False
        # 转换为浮点数并检查是否为整数
        float_num = float(number)
        if float_num.is_integer():
            return float_num % 2 == 0
        return False
    except:
        return False

def is_odd(number):
    """检查数字是否为奇数"""
    try:
        # 确保是数字且不是空值
        if pd.isna(number):
            return False
        # 转换为浮点数并检查是否为整数
        float_num = float(number)
        if float_num.is_integer():
            return float_num % 2 == 1
        return False
    except:
        return False

def process_hotel_data(folder_path):
    """处理酒店住宿数据"""
    # 获取所有以2开头的xlsx文件
    excel_files = glob.glob(os.path.join(folder_path, '2*.xlsx'))
    
    if not excel_files:
        print("没有找到以2开头的Excel文件")
        return None
    
    # 读取并合并所有Excel文件
    dfs = []
    for file in excel_files:
        try:
            df = pd.read_excel(file)
            dfs.append(df)
        except Exception as e:
            print(f"处理文件 {file} 时出错: {str(e)}")
            continue
    
    if not dfs:
        print("没有成功读取任何Excel文件")
        return None
    
    # 合并所有数据框
    combined_df = pd.concat(dfs, ignore_index=True)
    
    # 保留所有原始列
    result_df = combined_df.copy()
    
    # 添加新列：判断是否同时满足条件
    result_df['住宿天数偶数发票金额奇数'] = (
        result_df.apply(lambda row: 
            '是' if is_even(row['住宿天数']) and is_odd(row['发票含税金额'])
            else '否', axis=1)
    )
    
    return result_df

def save_results(df, output_path):
    """保存结果到Excel文件"""
    if df is not None:
        try:
            df.to_excel(output_path, index=False)
            print(f"结果已保存到: {output_path}")
        except Exception as e:
            print(f"保存文件时出错: {str(e)}")
    else:
        print("没有数据可以保存")

def main():
    # 获取当前脚本所在目录
    current_dir = os.path.dirname(os.path.abspath(__file__))
    
    # 设置输入文件夹路径（在当前目录下创建input文件夹）
    input_folder = os.path.join(current_dir, 'input')
    
    # 设置输出文件路径
    output_file = os.path.join(current_dir, 'hotel_expense_analysis.xlsx')
    
    # 确保输入文件夹存在
    if not os.path.exists(input_folder):
        os.makedirs(input_folder)
        print(f"已创建输入文件夹: {input_folder}")
        print("请将数据文件放入input文件夹中")
        return
    
    # 处理数据
    result_df = process_hotel_data(input_folder)
    
    # 保存结果
    save_results(result_df, output_file)

if __name__ == '__main__':
    main() 